<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>

<body>
	<script>

		// // 1. 先执行同步代码
		// console.log(1); // 1

		// // 2. 执行微任务队列中的任务
		// Promise.resolve().then(() => {
		//     console.log(2); // 2
		// });

		// // 3. 执行宏任务队列中的任务
		// setTimeout(() => {
		//     console.log(3); // 3
		// }, 0);

		// // 4. 再次执行微任务队列中的任务
		// Promise.resolve().then(() => {
		//     console.log(4); // 4
		// });


		// async function async1() {
		// 	console.log('async1 start')
		// 	await async2()
		// 	console.log('async1 end')
		// }
		// async function async2() {
		// 	console.log('async2')
		// }
		// console.log('script start')
		// setTimeout(function () {
		// 	console.log('setTimeout')
		// }, 0)
		// async1()
		// new Promise((resolve) => {
		// 	console.log('promise1')
		// 	resolve()
		// }).then(function () {
		// 	console.log('promise2')
		// })
		// console.log('script end')

		// // script start
		// // async1 start
		// // async2
		// // promise1
		// // script end
		// // async1 end
		// // promise2
		// // setTimeout

		async function async1() {
			console.log('async1 start'); 	// 2
			await async2();
			console.log('async1 end'); // 7
		}
		async function async2() {
			new Promise(function (resolve) {
				console.log('promise1');	// 3
				resolve();
			}).then(function () {
				console.log('promise2');	// 6
			});
		}
		console.log('script start'); // 1
		setTimeout(function () {
			console.log('setTimeout'); // 9
		}, 0)
		async1();
		new Promise(function (resolve) {
			console.log('promise3');	// 4
			resolve();
		}).then(function () {
			console.log('promise4'); // 8
		});
		console.log('script end');	// 5

		// script start
		// async1 start
		// promise1
		// promise3
		// script end
		// promise2
		// async1 end
		// promise4
		// setTimeout


	</script>
</body>

</html>